/////////////////////////////////////////////////////////////////////////////////////////////
// Filename: WindowsOwnedStates.h
// (c) Dave Ottley, 2012. All rights reserved.
/////////////////////////////////////////////////////////////////////////////////////////////
#ifndef WINDOWSOWNEDSTATES_H
#define WINDOWSOWNEDSTATES_H

///////////////////////////
//		INCLUDES
///////////////////////////


///////////////////////////
//		MY INCLUDES
///////////////////////////
#include "State.h"

class WindowsClass;
struct Telegram;

class WindowsNormalState : public State<WindowsClass>
{
private:
	// Singleton
	WindowsNormalState() {}
	WindowsNormalState(const WindowsNormalState&);
	WindowsNormalState& operator=(const WindowsNormalState& rhs);

public:
	static WindowsNormalState * GetInstance();
	virtual void Enter(WindowsClass * application);
	virtual void Execute(WindowsClass * application);
	virtual void Exit(WindowsClass * application);
	virtual bool OnMessage(WindowsClass * application, const Telegram& msg);

};

class WindowsGlobalState : public State<WindowsClass>
{
private:
	// Singleton
	WindowsGlobalState() {}
	WindowsGlobalState(const WindowsGlobalState&);
	WindowsGlobalState& operator=(const WindowsGlobalState& rhs);

public:
	static WindowsGlobalState * GetInstance();
	virtual void Enter(WindowsClass * application);
	virtual void Execute(WindowsClass * application);
	virtual void Exit(WindowsClass * application);
	virtual bool OnMessage(WindowsClass * application, const Telegram& msg);

};



#endif // WINDOWSOWNEDSTATES_H